/**
 * @file  messagedispatcher.h                                                 
 * @brief                                                     
 *                                                
 * 消息队列 
 *
 * @author   caopx                                         
 * @version  1.00
 * @date     2025.9.12
 *
 */

#ifndef	MESSAGEQUEUE__H
#define	MESSAGEQUEUE__H

#include <stdio.h>
#include <pthread.h>

// 消息结构体
typedef struct Message {
    int id;
    char content[256];
    struct Message* next;
} Message;

// 消息队列结构体
typedef struct {
    Message* head;
    Message* tail;
    int size;
    int capacity;
    int next_id; // 将ID计数器移到结构体中，并用互斥锁保护
    pthread_mutex_t mutex;
    pthread_cond_t not_empty;
    pthread_cond_t not_full;
} MessageQueue;

// 初始化消息队列
MessageQueue* mq_init(int capacity) ;

// 销毁消息队列
void mq_destroy(MessageQueue* mq) ;

// 添加消息到队列
int mq_enqueue(MessageQueue* mq, const char* content) ;

// 从队列获取消息
Message* mq_dequeue(MessageQueue* mq) ;

#endif